#ifndef _SDLEVENTFACTORY_H_
#define _SDLEVENTFACTORY_H_

#include <SDL.h>
#include <SECore/Event.h>
#include <unordered_map>
#include <functional>

namespace SEngine
{
    class SDLEventFactory
    {
    public:
        SDLEventFactory(SDL_Event & event);
        EventPtr Create();
    private:
        SDL_Event & m_event;
        static std::unordered_map<SDL_EventType, std::function<EventPtr(SDL_Event&)>> s_eventTable;
    };
} // namespace SEngine


#endif